package com.hqyj.aop;

import com.hqyj.exception.ParameterValidException;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
import org.springframework.validation.BindingResult;

/**
 * 对校验的业务逻辑封装
 */
@Aspect
@Component
public class ValidAop {

    //定义切入点
    @Pointcut("execution(* com.hqyj.controller..*(..))")
    public void point(){

    }
    //定义前置通知
    //拦截 切入点 并且 方法参数是以result对象结尾的方法
    @Before("point() && args(..,result)")
    public void deBefore(JoinPoint joinPoint, BindingResult result) throws ParameterValidException {
        if(result.getAllErrors().size()>0){
            //抛出自定义异常
            throw  new ParameterValidException(result);
        }

    }



}
